/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Estructuras;

import Estructuras.Tipos.User;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import prac3.operaciones.UsuariosFacadeLocal;
import prac3.persistencia.Usuarios;

/**
 *
 * @author usuario_local
 */

public class Cuentas {
    UsuariosFacadeLocal usuariosFacade = lookupUsuariosFacadeLocal();
   private static Cuentas instance = null;

   protected Cuentas() {
       Usuarios admin = new Usuarios();
       admin.setId("admin");
       Long l = new Long(0);
       admin.setPermisos(l);
       usuariosFacade.create(admin);
       Usuarios pepe = new Usuarios();
       pepe.setId("pepe");
       Long lp = new Long(1);
       pepe.setPermisos(lp);
       usuariosFacade.create(pepe);


   }
   public static Cuentas getInstance() {
      if(instance == null) {
         instance = new Cuentas();
      }
      return instance;
   }
    @Override
   public String toString(){
        String s = "";
        List<Usuarios> lista = usuariosFacade.findAll();
        int tamaño = lista.size();
        for(int i = 0;i<tamaño;i++){
            if(!lista.get(i).getId().equals("admin")){
                s+= "<DIV id=\"BlAdm\">\n";
                s+="<texto class=\"normal\">Usuario "+lista.get(i).getId()+". ";
                s+= "Es ";
                int p = lista.get(i).getPermisos().intValue();
                if (p==0) s+="Administrador";
                else if(p ==1) s+="Autorizado";
                else s+="Invitado";
                s+= ". Convertir en: ";
                s+="</texto>\n";
                s+="</DIV>\n";
                s+= "<DIV id=\"BlAdm2\">\n";
                s+= "<FORM class=\"admin\" method=\"post\" action=\"index.jsp\" \n >";
                s+= "<input type=\"submit\" value=\"Invitado\" name=\"invitado\" \n/>";
                s+= "<input type=\"hidden\" value=\"invitado\" name=\"form\" \n/>";
                s+= "<input type=\"hidden\" value="+lista.get(i).getId()+" name=\"nombre\" \n/>";
                s+= "<input type=\"hidden\" name=\"adm\" value=\"ad\" \n/>";
                s+= "</FORM>\n";
                s+= "<FORM class=\"admin\" method=\"post\" action=\"index.jsp\" \n>";
                s+= "<input type=\"submit\" value=\"Autorizado\" name=\"autorizado\" \n />";
                s+= "<input type=\"hidden\" value=\"autorizado\" name=\"form\" \n/>";
                s+= "<input type=\"hidden\" value="+lista.get(i).getId()+" name=\"nombre\" \n/>";
                s+= "<input type=\"hidden\" name=\"adm\" value=\"ad\"\n />";
                s+= "</FORM>\n";
                s+= "<FORM class=\"admin\" method=\"post\" action=\"index.jsp\"\n >";
                s+= "<input type=\"submit\" value=\"Administrador\" name=\"administrador\"\n />";
                s+= "<input type=\"hidden\" value=\"administrador\" name=\"form\" \n/>";
                s+= "<input type=\"hidden\" value="+lista.get(i).getId()+" name=\"nombre\" \n/>";
                s+= "<input type=\"hidden\" name=\"adm\" value=\"ad\" \n/>";
                s+= "</FORM>\n";
                s+="</DIV>\n";
                s+="<DIV id=\"BlEspacio\"></DIV>\n";
            }
       }
       return s;
   }

   public boolean cambiaPrioridad(String nom, int prio){
         Usuarios usu = usuariosFacade.find(nom);
         if(usu!= null){
            Long l=new Long(prio);
            usu.setPermisos(l);
            usuariosFacade.edit(usu);
            return true;
        }
        return false;
   }
   public boolean borraUsuario(String nom){

       Usuarios usu = usuariosFacade.find(nom);
       if(usu!= null){
           usuariosFacade.remove(usu);
           return true;
       }
       return false;


   }
   public boolean añadeUsuario(String nom, int prio){
       if(usuariosFacade.find(nom) == null){
            Usuarios usu = new Usuarios();
            usu.setId(nom);
            Long l = new Long(prio);
            usu.setPermisos(l);
            usuariosFacade.create(usu);
            return true;
       }
       return false;
   }
   public int esta(String nom){
        if(usuariosFacade.find(nom)!= null)
            return 1;
        return -1;
   }
   public boolean puede(String nom,int pri){
       Usuarios usu = usuariosFacade.find(nom);
       if(usu!=null){
           int p = usu.getPermisos().intValue();
           if(p<=pri)
                return true;
           return false;
       }
       return false;
   }

    private UsuariosFacadeLocal lookupUsuariosFacadeLocal() {
        try {
            Context c = new InitialContext();
            return (UsuariosFacadeLocal) c.lookup("java:global/Practica3/Practica3-ejb/UsuariosFacade!prac3.operaciones.UsuariosFacadeLocal");
        } catch (NamingException ne) {
            Logger.getLogger(getClass().getName()).log(Level.SEVERE, "exception caught", ne);
            throw new RuntimeException(ne);
        }
    }
}
